/*
 * File:    PropertiesInterface.java
 * Created: 08-May-2007
 * Version: $Id$
 *
 * COPYRIGHT (C) 2007, Bitgate Software, LLC.  All Rights Reserved.
 *
 * software@bitgatesoftware.com
 */

package com.bitgate.util.socket;

/**
 * This interface provides a way to add and retrieve properties from a client communication channel object.  This
 * is used to allow for multiple objects to be attached to a client channel, which can be used for storage, or
 * other reasons.
 * 
 * @author kenji
 * @version $Id$
 */
public interface PropertiesInterface
{
	/**
	 * Allows you to attach an object by name to a client channel.
	 * 
	 * @param property The property to identify.
	 * @param obj The <code>Object</code> to attach.
	 */
	void addProperty(String property, Object obj);
	
	/**
	 * Retrieves the object attached to the client channel by name.
	 * 
	 * @param property The property name to identify.
	 * @return The <code>Object</code> assigned to the specified property.
	 */
	Object getProperty(String property);
	
	/**
	 * Removes an attached property by name.
	 * 
	 * @param property The property name to remove.
	 * @return The <code>Object</code> that was assigned to the property at the time of removal.
	 */
	Object removeProperty(String property);
}